千万级并发系统
大纲
阶段 | 核心挑战 | 典型技术/设计 | 目标能力 |
---|---|---|---|
1. 单机单体 | 功能验证、快速迭代 | 单体应用 + 单机 DB | MVP上线速度 |
2. 读写分离 | 数据库瓶颈 | 主从复制、读写路由 | QPS 10 万级 |
3. 缓存加速 | 熔断热点、降低延迟 | Redis、Memcached;本地缓存 | ms 级响应 |
4. 数据库扩展 | 数据量 & 流量猛增 | 分库分表、分区、Consistent Hash | TB-PB 级数据 |
5. 异步化 & 松耦合 | 高并发 & 高可用 | 消息队列(Kafka/RabbitMQ)、事件驱动 | 流量削峰、系统解耦 |
6. 微服务 & 云原生 | 团队协作、快速弹性 | 服务治理(Service Mesh)、容器 & K8s、CI/CD | 全球多活、弹性伸缩 |
1. 单机单体
1.1 垂直扩展与水平扩展
维度 | 垂直扩展 (Vertical Scaling) | 水平扩展 (Horizontal Scaling) |
---|---|---|
做法 | 给同一台服务器加更多资源:CPU、RAM、SSD … | 增减多台服务器;对外表现为一个资源池 |
优点 | - 架构简单,代码几乎零改动 - 统一内存空间,避免分布式一致性难题 | - 理论上可无限扩容 - 天然具备冗余与故障转移 - 可按需弹性伸缩,资源利用率更高 |
局限 | - 存在硬件上限,价格随规格呈指数增长 - 无冗余:机器宕机=业务停机 | - 开发 & 运维复杂:需负载均衡、状态拆分、分布式数据层 - 网络开销、跨节点一致性需额外设计 |
典型场景 | 单体应用、PoC、业务早期、内部管理系统 | 大规模 Web / 移动应用、分布式存储与计算、云原生微服务 |
成本模型 | CAPEX:一次性硬件投入高;升级需停机 | OPEX:按量付费、可渐进投入;云厂商 Auto-Scaling |
常见技术要点 | NUMA 优化、内核参数调优、超线程 | 负载均衡 (LVS/Nginx/ALB)、容器编排 (K8s)、分库分表、Cache、MQ |
1.2 负载均衡
维度 | 说明 |
---|---|
工作方式 | 公开 1 个公网 IP,隐藏后端 Web 服务器私网 IP; 所有客户端先连 LB,再由 LB 把请求分发到健康实例 |
解决问题 | - 单点故障:任一 Web 实例宕机,流量自动切到其他实例,业务不停服 - 水平扩容:流量飙升时,只需向服务器池加节点,LB 即刻开始转发,无需停机 |
安全隔离 | Web 服务器仅暴露私有 IP,外网不可直连,减少攻击面 |
健康检查 | 周期性探测 TCP/HTTP;探测失败即将实例摘除,恢复后再加入 |
常见调度算法 | 轮询、最少连接、源地址 Hash、加权轮询等 |
部署形态 | 软件(Nginx/OpenResty、HAProxy)、硬件(F5/Array)、云托管(AWS ALB、阿里云 SLB) |
层级 | L4(TCP/UDP,性能高,逻辑简单)L7(HTTP/HTTPS,可做 Cookie 粘性、HTTPS 终端、WAF) |